const TabsPagePlugin = {
	install(Vue) {
		Vue.mixin({
			methods: {
				$closePage(closeRoute, nextRoute) {
					const event = new CustomEvent('page:close', {
						detail: {
							closeRoute,
							nextRoute
						}
					})
					window.dispatchEvent(event)
				},
				$refreshPage(route) {
					const path = typeof route === 'object' ? route.path : route
					const event = new CustomEvent('page:refresh', {
						detail: {
							pageKey: path
						}
					})
					window.dispatchEvent(event)
				},
				$openPage(route, title) {
					this.$setPageTitle(route, title)
					this.$router.push(route)
				},
				$setPageTitle(route, title) {
					if (title) {
						let path = typeof route === 'object' ? route.path : route
						path = path && path.split('?')[0]
						this.$store.commit('setting/setCustomTitle', {
							path,
							title
						})
					}
				}
			},
			computed: {
				customTitle() {
					const customTitles = this.$store.state.setting.customTitles
					const path = this.$route.path.split('?')[0]
					const custom = customTitles.find(item => item.path === path)
					return custom && custom.title
				}
			}
		})
	}
}

export default TabsPagePlugin
